#!/usr/bin/env  python
__license__     = 'GPL v3'
__copyright__   = '4 February 2011, desUBIKado'
__author__      = 'desUBIKado'
__version__     = 'v0.12'
__date__        = '28, Jul 2016'
'''
http://www.weblogssl.com/
'''

import re

from calibre.web.feeds.news import BasicNewsRecipe


class weblogssl(BasicNewsRecipe):
    __author__     = 'desUBIKado'
    description    = u'Weblogs colectivos dedicados a seguir la actualidad sobre tecnologia, entretenimiento, estilos de vida, motor, deportes y economia.'
    title          = u'Weblogs SL (Xataka, Genbeta, VidaExtra, Blog de Cine y otros)'
    publisher      = 'Weblogs SL'
    language       = 'es'
    timefmt        = '[%a, %d %b, %Y]'
    oldest_article = 1
    max_articles_per_feed = 100
    encoding       = 'utf-8'
    use_embedded_content  = False
    remove_empty_feeds    = True
    remove_javascript = True
    no_stylesheets = True

    # Si no se quiere recuperar todos los blogs se puede suprimir la descarga del que se desee poniendo
    # un caracter # por delante, es decir,  # (u'Applesfera', u'http://feeds.weblogssl.com/applesfera'),
    # haría que no se descargase Applesfera.

    feeds              = [
        (u'Xataka', u'http://feeds.weblogssl.com/xataka2'),
        (u'Xataka M\xf3vil', u'http://feeds.weblogssl.com/xatakamovil'),
        (u'Xataka Foto', u'http://feeds.weblogssl.com/xatakafoto'),
        (u'Xataka Android', u'http://feeds.weblogssl.com/xatakandroid'),
        (u'Xataka Smart Home', u'http://feeds.weblogssl.com/Xatakahome'),
        (u'Xataka Windows', u'http://feeds.weblogssl.com/xatakawindows'),
        (u'Xataka Ciencia', u'http://feeds.weblogssl.com/xatakaciencia'),
        (u'Applesfera', u'http://feeds.weblogssl.com/applesfera'),
        (u'Vida Extra', u'http://feeds.weblogssl.com/vidaextra'),
        (u'Genbeta', u'http://feeds.weblogssl.com/genbeta'),
        (u'Genbeta Dev', u'http://feeds.weblogssl.com/genbetadev'),
        (u'Magnet', u'http://feeds.weblogssl.com/xatakamagnet2'),


        (u'Tendencias', u'http://feeds.weblogssl.com/trendencias'),
        (u'Tendencias Belleza', u'http://feeds.weblogssl.com/trendenciasbelleza'),
        (u'Tendencias Hombre', u'http://feeds.weblogssl.com/trendenciashombre'),
        (u'Tendencias Lifestyle', u'http://feeds.weblogssl.com/trendenciaslifestyle'),
        (u'Directo al paladar', u'http://feeds.weblogssl.com/directoalpaladar'),
        (u'Beb\xe9s y m\xe1s', u'http://feeds.weblogssl.com/bebesymas'),
        (u'Vit\xf3nica', u'http://feeds.weblogssl.com/vitonica'),
        (u'Decoesfera', u'http://feeds.weblogssl.com/decoesfera'),
        (u'Embelezzia', u'http://feeds.weblogssl.com/embelezzia'),
        (u'Pop rosa', u'http://feeds.weblogssl.com/poprosa'),

        (u'Motorpasi\xf3n', u'http://feeds.weblogssl.com/motorpasion'),
        (u'Motorpasi\xf3n Moto', u'http://feeds.weblogssl.com/motorpasionmoto'),
        (u'Motorpasi\xf3n Futuro', u'http://feeds.weblogssl.com/motorpasionfuturo'),

        (u'Blog de Cine', u'http://feeds.weblogssl.com/blogdecine'),
        (u'Vaya tele', u'http://feeds.weblogssl.com/vayatele2'),
        (u'Diario del viajero', u'http://feeds.weblogssl.com/diariodelviajero'),
        (u'Papel en blanco', u'http://feeds.weblogssl.com/papelenblanco'),

        (u'El blog salm\xf3n', u'http://feeds.weblogssl.com/elblogsalmon2'),
        (u'Pymes y aut\xf3nomos', u'http://feeds.weblogssl.com/pymesyautonomos'),
        (u'Ahorro diario', u'http://feeds.weblogssl.com/ahorrodiario'),

        (u'Xataka México', u'http://feeds.weblogssl.com/xatakamx'),
        (u'Xataka Android México', u'http://feeds.weblogssl.com/xatakandroidmx'),
        (u'Vida Extra México', u'http://feeds.weblogssl.com/vidaextramx'),
        (u'Xataka Colombia', u'http://feeds.weblogssl.com/xatakaco'),

        (u'Directo al paladar México', u'http://feeds.weblogssl.com/directoalpaladarmx'),
        (u'Vit\xf3nica México', u'http://feeds.weblogssl.com/vitonicamx'),
        (u'Tendencias Hombre México', u'http://feeds.weblogssl.com/trendenciashombremx'),

        (u'Motorpasi\xf3n México', u'http://feeds.weblogssl.com/motorpasionmx'),
    ]

    keep_only_tags     = [
                          dict(name='div', attrs={'class':'content-container'})
                         ]

    remove_tags        = [
                          dict(name='div', attrs={'class':'article-social-share m-v1 js-article-share js-article-social-share'}),
                          dict(name='div', attrs={'class':'article-social-share m-v1 js-article-social-share'}),
                          dict(name='div', attrs={'class':'social-widgets'}),
                          dict(name='div', attrs={'class':'article-social-share m-in-normal'}),
                          dict(name='div', attrs={'class':'article-comments'}),
                          dict(name='div', attrs={'class':'article-links'}),
                          dict(name='div', attrs={'class':'article-topics-list'}),
                          dict(name='div', attrs={'class':'ad-box'}),
                          dict(name='blockquote', attrs={'class':'instagram-media'}),
                          dict(name='img', attrs={'alt':'Código QR'}),
                          dict(name='div', attrs={'id':'comments'})
                         ]

    remove_tags_after  = dict(name='div', attrs={'id':'comments'})

    def print_version(self, url):
        if url.startswith('http://www'):
            return url.replace('http://www.', 'http://m.')
        else:
            return url.replace('http://', 'http://m.')

    preprocess_regexps = [
        # Para poner una linea en blanco entre un comentario y el siguiente
        (re.compile(r'<li id="c', re.DOTALL|re.IGNORECASE), lambda match: '<br><br><li id="c'),
        # Para ver las imágenes en las noticias de m.xataka.com
        (re.compile(r'<noscript>', re.DOTALL|re.IGNORECASE), lambda m: ''),
        (re.compile(r'</noscript>', re.DOTALL|re.IGNORECASE), lambda m: ''),

        # Para cambiar de sitio el more
        (re.compile(r'<div class="article-content">', re.DOTALL|re.IGNORECASE), lambda m: '<div class="article-content"><!--more-->'),
        (re.compile(r'<div class="\/n<!--more-->">', re.DOTALL|re.IGNORECASE), lambda m: ''),

        # Para presentar la primera imagen del artículo
        (re.compile(r' srcset="http://i.blogs.es/', re.DOTALL|re.IGNORECASE), lambda match: ' src="http://i.blogs.es/'),
        (re.compile(r' 450w, http://i.blogs.es', re.DOTALL|re.IGNORECASE), lambda match: '"><!--'),
        (re.compile(r'1366w"><span></span>', re.DOTALL|re.IGNORECASE), lambda match: '-->'),
        (re.compile(r'1366w" sf-src="http://i.blogs.es', re.DOTALL|re.IGNORECASE), lambda match: '--> sf-src="http://i.blogs.es')
    ]

    # Para sustituir el video incrustado de YouTube por una imagen

    def preprocess_html(self, soup):
        for video_yt in soup.findAll('iframe',{'title':'YouTube video player'}):
            if video_yt:
                video_yt.name = 'img'
                fuente = video_yt['src']
                fuente2pre = fuente.replace('http://www.youtube.com/embed/','http://img.youtube.com/vi/')
                fuente2 = fuente2pre.replace('https://www.youtube.com/embed/','https://img.youtube.com/vi/')
                fuente3 = fuente2.replace('?rel=0','')
                video_yt['src'] = fuente3 + '/0.jpg'

        for video_yt2 in soup.findAll('iframe',{'allowfullscreen'}):
            if video_yt2:
                esyt = video_yt2.find('youtube')
                if esyt:
                    video_yt2.name = 'img'
                    fuente = video_yt2['src']
                    fuente2pre = fuente.replace('http://www.youtube.com/embed/','http://img.youtube.com/vi/')
                    fuente2 = fuente2pre.replace('https://www.youtube.com/embed/','https://img.youtube.com/vi/')
                    video_yt2['src'] = fuente2 + '/0.jpg'

        return soup

    def get_article_url(self, article):
        return article.get('guid', None)
